﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LIMS.IDAL
{
    public interface ILabOrder
    {

        /// <summary>
        ///  查询指定的实验室能否被预约。返回true表示已经被预约，返回false表示该实验室在指定条件下可以被预约
        /// </summary>
        /// <param name="orderTestTime">指定预约日期</param>
        /// <param name="labID">指定预约的实验室ID</param>
        /// <param name="orderClassTimeSpan">枚举值-->指定预约上课时间段</param>
        /// <returns>返回false表示该实验室在指定条件下可以被预约；否则返回true</returns>
        Boolean IsCanOrder(DateTime orderTestTime, String labID, Model.OrderClassTimeSpan orderClassTimeSpan);

        /// <summary>
        /// 插入一条预约数据
        /// </summary>
        /// <param name="order">待写入数据库的预约实体对象</param>
        /// <returns></returns>
        Boolean InsertOrderInfo(LIMS.Model.OrderLabs order);

        /// <summary>
        /// 获取预约总项数
        /// </summary>
        /// <returns></returns>
        Int32 TotalOrders();

        /// <summary>
        /// 删除指定的预约数据
        /// </summary>
        /// <param name="orderID"></param>
        /// <returns></returns>
        Boolean RemoveOrder(Int32 orderID);

        /// <summary>
        /// 更新指定的预约信息
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        Boolean Modify(LIMS.Model.OrderLabs order);

        /// <summary>
        /// 获取所有的实验室预约信息
        /// </summary>
        /// <returns></returns>
        List<LIMS.Model.OrderLabs> FindAll();

        /// <summary>
        /// 根据预约说明来获取所有与之相关的预约数据
        /// </summary>
        /// <param name="strDetail">预约说明</param>
        /// <returns></returns>
        List<LIMS.Model.OrderLabs> FindByDetail(String strDetail);

        /// <summary>
        /// 根据教师ID获取与之相关的实验项目
        /// </summary>
        /// <param name="teacherID"></param>
        /// <returns></returns>
        List<LIMS.Model.OrderLabs> FindByTeacherID(String teacherID);

        /// <summary>
        /// 根据指定的预约ID获取预约数据
        /// </summary>
        /// <param name="labID"></param>
        /// <returns></returns>
        List<LIMS.Model.OrderLabs> FindByLabID(String labID);

        /// <summary>
        /// 根据预约日期来获取该日期下所有数据
        /// </summary>
        /// <param name="orderTestTime">指定的预约日期</param>
        /// <returns></returns>
        List<LIMS.Model.OrderLabs> FindByTestTime(DateTime orderTestTime);

        /// <summary>
        /// 根据上课时间段来获取所有这个时间段的预约数据
        /// </summary>
        /// <param name="orderClassTime">指定的上课时间段</param>
        /// <returns></returns>
        List<LIMS.Model.OrderLabs> FindByClassTime(Model.OrderClassTimeSpan orderClassTimeSpan);

        ///// <summary>
        /////以整张表的形式获取所有预约数据
        ///// </summary>
        ///// <returns>返回整张数据表DataTable类型</returns>
        ////System.Data.DataTable FindAllOrders();


    }
}
